昨天,我們介紹了Maven對於專案建置的重要性,也稍微說明了pom.xml內部分元素的意義,今天讓我們來繼續了解pom.xml內相依性(也稱依賴, Dependency)的設定。
在專案中會用到各種函式庫(Library),因此經常會需要根據專案的需求設定相依性。範例如下:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>demo-project</artifactId>
<version>1.0.0</version>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.5.4</version>
</dependency>
</dependencies>
</project>
在pom.xml中相依性是透過<dependencies>
元素和它的子元素<dependency>
來進行設定,每個相依套件都會被包裹在<dependency>
元素內。在每個<dependency>
內包含了基本的子元素<groupId>
、<artifactId>
、<version>
,當Maven專案建構時,會根據以上資訊將依賴從專案定義的倉庫中自動下載並加入專案中,幫助開發人員管理第三方套件。
以上段程式碼為例,我們在pom.xml內加入了Spring Boot 的 Web Starter套件,它提供了Web應用程式常用的套件,由於這個依賴包含了starter,它會自動引入與 Web 開發相關的依賴,例如 spring-webmvc、spring-web、tomcat等套件。這樣,開發者無需一個一個手動加入相應的套件,大大簡化了專案的依賴管理。
在<dependencies>
設定的相依套件,會從Maven庫中下載到本地的.m2目錄下(預設路徑為:C:\Users[使用者名稱].m2\repository)
另外,如果相依套件不存在於公開的Maven庫中而是存放在私有的Maven庫的話,也可以於pom.xml內加入<repositories>
元素內,承如<dependencies>
元素一樣,<repositories>
元素也有自己的子元素<repository>
,我們可以透過此元素設定私有倉庫的位置,當 Maven 在公開庫中找不到 <dependencies>
內設定的套件時,便會到指定的私有 Maven 庫中尋找並下載。